package com.java214.elec.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.java214.elec.entity.ElecSystemDDL;
import com.java214.elec.entity.ElecUser;
import com.java214.elec.service.IElecSystemDDLService;
import com.java214.elec.service.IElecUserService;
import com.java214.elec.utils.ValueStackUtils;

/**   
*    
* 项目名称：MyEleManagerSys   
* 类名称：ElecUserController   
* 类描述：   用户控制类
* 创建人：君无邪   
* 创建时间：2019年11月15日 上午1:57:01   
* 修改备注：  https://www.java214.com 
* @version    1.0
*    
*/ 
@SuppressWarnings("serial")
@Controller("elecUserController")
@Scope(value="prototype")
public class ElecUserController extends BaseController<ElecUser> {

	private ElecUser elecUser=this.getModel();
	
	
	@Resource(name=IElecUserService.SERVICE_NAME)
	private IElecUserService elecUserService;
	
	@Resource(name=IElecSystemDDLService.SERVICE_NAME)
	private IElecSystemDDLService elecSystemDDLService;
	
	/**
	 * 
	* @Name:home
	* @Description: 用户管理首页显示
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Date:2019年11月15日 上午2:05:35 
	* @Parameters: null
	* @Return: 跳转到system/userIndex.jsp
	 */
	public String home(){
		
		//1：从数据字典表中，查询所属单位的列表，返回List<ElecSystemDDL>
				List<ElecSystemDDL> jctList = elecSystemDDLService.findElecSystemDDLListByKeyword("所属单位");
				request.setAttribute("jctList", jctList);
				//2:指定查询条件，查询用户集合
				List<ElecUser> userList = elecUserService.findUserListByCondition(elecUser);
				request.setAttribute("userList", userList);
		
		return "home";
	}
	
	/**
	 * 
	* @Name:add
	* @Description: 跳转到用户新增页面
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Date:2019年11月15日 上午2:26:43 
	* @Parameters: null
	* @Return: 跳转到system/userAdd.jsp
	 */
	public String add(){
		//1：查询性别，职位，所属单位，是否在职的下拉菜单
				this.initSystemDDL();
		return "add";
	}
	
	/**查询性别，职位，所属单位，是否在职的下拉菜单*/
	private void initSystemDDL() {
		List<ElecSystemDDL> jctList = elecSystemDDLService.findElecSystemDDLListByKeyword("所属单位");
		request.setAttribute("jctList", jctList);
		List<ElecSystemDDL> sexList = elecSystemDDLService.findElecSystemDDLListByKeyword("性别");
		request.setAttribute("sexList", sexList);
		List<ElecSystemDDL> isDutyList = elecSystemDDLService.findElecSystemDDLListByKeyword("是否在职");
		request.setAttribute("isDutyList", isDutyList);
		List<ElecSystemDDL> postList = elecSystemDDLService.findElecSystemDDLListByKeyword("职位");
		request.setAttribute("postList", postList);
	}
	
	/**  
	* @Name: findJctUnit
	* @Description: 页面中选择所属单位，使用所属单位查询对应所属单位的单位名称（ajax的二级联动）
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2019-11-15（创建日期）
	* @Parameters: 无
	* @Return: ajax，使用struts的ajax转发
	*/
	public String findJctUnit(){
		//将数据字典的值转换成json数据
		//1：使用jquery的ajax获取到所属单位的中文名称（北京）
		String keyword = elecUser.getJctID();//北京
		//2：以选择的数据类型作为条件，查询对应数据类型的集合，返回List<ElecSystemDDL>
		List<ElecSystemDDL> list = elecSystemDDLService.findElecSystemDDLListByKeyword(keyword);
		//3：将list放置到栈顶，将list使用struts2的方式转换成json数据
		ValueStackUtils.setValueStack(list);
		return "findJctUnit";
	}
	
	/**  
	* @Name: checkUser
	* @Description: 使用登录名作为条件，查询登录名在数据库中是否出现重复
	*      String message = "";
	*        message=1:表示登录名不能为空
	*        message=2:表示登录名在数据库中已经存在，此时不能保存
	*        message=3:表示登录名在数据库表不存在，此时可以保存
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2019-11-15（创建日期）
	* @Parameters: 无
	* @Return: ajax，使用struts的ajax转发
	*/
	public String checkUser(){
		//获取登录名
		String logonName = elecUser.getLogonName();
		//以登录名作为条件，查询用户表
		String message = elecUserService.checkUser(logonName);
		//将message放置到栈顶
		elecUser.setMessage(message);
		return "checkUser";
	}
	
	/**  
	* @Name: save
	* @Description: 保存用户信息
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2019-11-15（创建日期）
	* @Parameters: 无
	* @Return: 
	*/
	public String save(){
		elecUserService.saveUser(elecUser);
		return "close";
	}
	
	/**  
	* @Name: edit
	* @Description: 跳转到编辑页面
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2019-11-15（创建日期）
	* @Parameters: 无
	* @Return: 跳转到system/userEdit.jsp
	*/
	public String edit(){
		//1：使用userID，查询对应用户的详细信息，返回ElecUser对象，放置到栈顶，用于struts2支持的表单回显
		ElecUser user = elecUserService.findElecUserByID(elecUser);
		//将新对象压入到栈顶之前，从新设置栈顶的值
		user.setViewflag(elecUser.getViewflag());
		ValueStackUtils.setValueStack(user);
		//2：查询性别，职位，所属单位，是否在职的下拉菜单
		this.initSystemDDL();
		//3：从栈顶对象ElecUser，获取数据项的编号（ddlCode=2和keyword="所属单位"，获取数据项的值上海）
		String ddlName = elecSystemDDLService.findDdlNameByKeywordAndDdlCode("所属单位",user.getJctID());
		//4：遍历单位名称的集合(依赖所属单位的名称)，返回List<ElecSystemDDL>
		List<ElecSystemDDL> jctUnitList= elecSystemDDLService.findElecSystemDDLListByKeyword(ddlName);
		request.setAttribute("jctUnitList", jctUnitList);
		return "edit";
	}
	
	/**  
	* @Name: delete
	* @Description: 删除页面选择的用户信息
	* @Author: 滕一帆（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2019-11-15（创建日期）
	* @Parameters: 无
	* @Return: 重定向到system/userIndex.jsp
	*/
	public String delete(){
		elecUserService.deleteUserByIds(elecUser);
		return "delete";
	}
	
}
